home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <stdlib.h>
-
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <intuition/screens.h>
-
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
- #include <clib/gadtools_protos.h>
-
- #include "Prefs.h"
- #include "GUI.h"
- #include "WheelMouse.h"
-
- #include "ScrollWin.h"
-
- #define HSCROLL_ID 1
- #define VSCROLL_ID 2
- #define NUDGEPROP_ID 3
- #define FORGERAWKEY_ID 4
- #define RAWKEYPAGE_ID 5
- #define PAGETHRESHOLD_ID 6
- #define FAKESCROLLSPEED_ID 7
- #define WINDOWMODE_ID 8
-
- BOOL ScrollWin_Show(struct ScrollWinContext *pwc);
- void ScrollWin_Hide(struct ScrollWinContext *pwc);
- BOOL ScrollWin_Handle(struct ScrollWinContext *pwc,unsigned long sigs);
- void ScrollWin_Dispose(struct ScrollWinContext *pwc);
-
- extern struct WheelMouseContext *MyWM;
-
- char *SWinGadTitles[]=
- {
- "Prop Gadgets:",
- "H Speed:",
- "V Speed:",
- "Move->Scroll speed:",
- "Enabled:",
- "Shift paging:",
- "Page after %ld lines ",
- "Keypresses:",
- "Scroll Window:",
- NULL
- };
-
- #define PROPGADGETS_TITLE 0
- #define HORIZSPEED_TITLE 1
- #define VERTSPEED_TITLE 2
- #define FAKESCROLLSPEED_TITLE 3
- #define ENABLED_TITLE 4
- #define KEYPAGING_TITLE 5
- #define PAGETHRESHOLD_TITLE 6
- #define KEYPRESSES_TITLE 7
- #define WINDOWMODE_TITLE 8
-
- BOOL ScrollWin_Show(struct ScrollWinContext *pwc)
- {
- struct Gadget *gg;
- int width,width2,leftedge,topedge,tabstop;
- int winleft,wintop;
-
- if(pwc->Visible)
- return(FALSE);
-
- if(!(pwc->Screen=LockPubScreen(NULL)))
- return(FALSE);
-
- if(!(pwc->GUI=GUI_Create(pwc->Screen,pwc->Screen->Font,8,8)))
- {
- pwc->Hide(pwc);
- return(FALSE);
- }
-
- GUI_StringTab(pwc->GUI,SWinGadTitles);
-
- width=GUI_MaxStringWidth(pwc->GUI,MyWM->MidButton.ClickModeNames);
- width2=GUI_MaxStringWidth(pwc->GUI,MyWM->MidButton.DoubleClickModeNames);
- if(width2>width) width=width2;
- width2=GUI_MaxStringWidth(pwc->GUI,MyWM->MidButton.ClickRollModeNames);
- if(width2>width) width=width2;
-
- pwc->GUI->InnerWidth=pwc->GUI->TabStop+width+64;
-
- gg=GUI_BuildCycleGadget(pwc->GUI,SWinGadTitles[WINDOWMODE_TITLE],MyWM->WindowModeNames,WINDOWMODE_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTCY_Active,
- pwc->Prefs->GetLong(pwc->Prefs,"WindowMode",0),TAG_DONE);
-
- gg=GUI_BuildSlider(pwc->GUI,SWinGadTitles[FAKESCROLLSPEED_TITLE],1,32,17,FAKESCROLLSPEED_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTSL_Level,
- pwc->Prefs->GetLong(pwc->Prefs,"FakeScrollSpeed",17),TAG_DONE);
-
- gg=GUI_BuildText(pwc->GUI,SWinGadTitles[PROPGADGETS_TITLE]);
-
- gg=GUI_BuildCheckBox(pwc->GUI,SWinGadTitles[ENABLED_TITLE],NUDGEPROP_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTCB_Checked,
- pwc->Prefs->GetLong(pwc->Prefs,"NudgeProp",TRUE),TAG_DONE);
-
- gg=GUI_BuildSlider(pwc->GUI,SWinGadTitles[HORIZSPEED_TITLE],1,32,17,HSCROLL_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTSL_Level,
- pwc->Prefs->GetLong(pwc->Prefs,"XScrollSpeed",17),TAG_DONE);
-
- gg=GUI_BuildSlider(pwc->GUI,SWinGadTitles[VERTSPEED_TITLE],1,32,17,VSCROLL_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTSL_Level,
- pwc->Prefs->GetLong(pwc->Prefs,"YScrollSpeed",17),TAG_DONE);
-
- gg=GUI_BuildText(pwc->GUI,SWinGadTitles[KEYPRESSES_TITLE]);
-
- topedge=pwc->GUI->InnerHeight;
-
- gg=GUI_BuildCheckBox(pwc->GUI,SWinGadTitles[ENABLED_TITLE],FORGERAWKEY_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTCB_Checked,
- pwc->Prefs->GetLong(pwc->Prefs,"ForgeRawKey",TRUE),TAG_DONE);
-
- tabstop=pwc->GUI->TabStop;
- pwc->GUI->InnerHeight=topedge;
-
- pwc->GUI->TabStop=pwc->GUI->InnerWidth;
- pwc->GUI->TabStop-=gg->Width+8+pwc->GUI->BorderLeft+pwc->GUI->BorderRight;
-
- gg=GUI_BuildCheckBox(pwc->GUI,SWinGadTitles[KEYPAGING_TITLE],RAWKEYPAGE_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTCB_Checked,
- pwc->Prefs->GetLong(pwc->Prefs,"RawKeyPage",TRUE),TAG_DONE);
-
- pwc->GUI->TabStop=tabstop;
-
- gg=GUI_BuildSliderFormatted(pwc->GUI,SWinGadTitles[PAGETHRESHOLD_TITLE],1,12,4,PAGETHRESHOLD_ID);
- GT_SetGadgetAttrs(gg,NULL,NULL,GTSL_Level,
- pwc->Prefs->GetLong(pwc->Prefs,"PageThreshold",4),TAG_DONE);
-
-
- if(!(pwc->GUI->LastGadget))
- {
- pwc->Hide(pwc);
- return(FALSE);
- }
-
- winleft=pwc->Prefs->GetLong(pwc->Prefs,"ScrollLeft",0);
- wintop=pwc->Prefs->GetLong(pwc->Prefs,"ScrollTop",1+pwc->Screen->BarHeight);
-
- if(!(pwc->Window=OpenWindowTags(NULL,WA_Left,winleft,
- WA_Top,wintop,
- WA_InnerWidth,pwc->GUI->InnerWidth,
- WA_InnerHeight,pwc->GUI->InnerHeight,
- WA_IDCMP,IDCMP_REFRESHWINDOW|IDCMP_CLOSEWINDOW|pwc->GUI->IDCMP,
- WA_SizeGadget,FALSE,WA_DragBar,TRUE,
- WA_DepthGadget,TRUE,WA_CloseGadget,TRUE,
- WA_NewLookMenus,TRUE,
- WA_Activate,FALSE,
- WA_Title,"Scrolling settings...",TAG_DONE)))
- {
- pwc->Hide(pwc);
- return(FALSE);
- }
-
- pwc->GUI->Attach(pwc->GUI,pwc->Window);
-
- pwc->Signals=1<<pwc->Window->UserPort->mp_SigBit;
-
- pwc->Visible=TRUE;
- return(TRUE);
- }
-
-
- void ScrollWin_Hide(struct ScrollWinContext *pwc)
- {
- if(pwc->Window)
- {
- pwc->Prefs->SetLong(pwc->Prefs,"ScrollTop",pwc->Window->TopEdge);
- pwc->Prefs->SetLong(pwc->Prefs,"ScrollLeft",pwc->Window->LeftEdge);
- CloseWindow(pwc->Window);
- }
- pwc->Window=FALSE;
- pwc->Signals=0;
-
- if(pwc->GUI)
- pwc->GUI->Dispose(pwc->GUI);
- pwc->GUI=NULL;
-
- if(pwc->Screen)
- UnlockPubScreen(NULL,pwc->Screen);
- pwc->Screen=FALSE;
-
- if(pwc->Visible)
- pwc->Visible=FALSE;
- }
-
-
- void ScrollWin_Dispose(struct ScrollWinContext *pwc)
- {
- if(pwc)
- {
- if(pwc->Visible)
- pwc->Hide(pwc);
- free(pwc);
- }
- }
-
-
- struct ScrollWinContext *ScrollWin_Create(struct PrefsGroup *pg)
- {
- struct ScrollWinContext *pwc;
- if(!(pwc=malloc(sizeof(struct ScrollWinContext))))
- return(NULL);
- memset(pwc,0,sizeof(struct ScrollWinContext));
- pwc->Dispose=ScrollWin_Dispose;
- pwc->Handle=ScrollWin_Handle;
- pwc->Hide=ScrollWin_Hide;
- pwc->Show=ScrollWin_Show;
-
- pwc->Prefs=pg;
-
- return(pwc);
- }
-
-
- BOOL ScrollWin_Handle(struct ScrollWinContext *pwc,unsigned long sigs)
- {
- BOOL cont=TRUE,close=FALSE;
- long value;
- char *string;
- if(pwc)
- {
- if(sigs&pwc->Signals)
- {
- struct IntuiMessage *im;
- while(im=GT_GetIMsg(pwc->Window->UserPort))
- {
- int class,code,id;
- struct Gadget *gg;
- class=im->Class;
- code=im->Code;
- switch(class)
- {
- case IDCMP_GADGETUP:
- gg=(struct Gadget *)im->IAddress;
- id=gg->GadgetID;
- GT_ReplyIMsg(im);
- switch(id)
- {
- case HSCROLL_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTSL_Level,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"XScrollSpeed",value);
- MyWM->ScrollSpeedX=value;
- break;
- case VSCROLL_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTSL_Level,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"YScrollSpeed",value);
- MyWM->ScrollSpeedY=value;
- break;
- case FAKESCROLLSPEED_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTSL_Level,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"FakeScrollSpeed",value);
- MyWM->FakeScrollSpeed=value;
- break;
- case PAGETHRESHOLD_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTSL_Level,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"PageThreshold",value);
- MyWM->PageThreshold=value;
- break;
- case NUDGEPROP_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTCB_Checked,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"NudgeProp",value);
- MyWM->NudgeProp=value;
- break;
- case FORGERAWKEY_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTCB_Checked,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"ForgeRawKey",value);
- MyWM->ForgeRawKey=value;
- break;
- case RAWKEYPAGE_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTCB_Checked,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"RawKeyPage",value);
- MyWM->RawKeyPage=value;
- break;
- case WINDOWMODE_ID:
- GT_GetGadgetAttrs(gg,pwc->Window,NULL,GTCY_Active,&value,TAG_DONE);
- pwc->Prefs->SetLong(pwc->Prefs,"WindowMode",value);
- MyWM->WindowMode=value;
- break;
- }
- break;
- case IDCMP_CLOSEWINDOW:
- GT_ReplyIMsg(im);
- close=TRUE;
- break;
- case IDCMP_REFRESHWINDOW:
- GT_ReplyIMsg(im);
- GT_BeginRefresh(pwc->Window);
- GT_EndRefresh(pwc->Window, TRUE);
- break;
- default:
- GT_ReplyIMsg(im);
- break;
- }
- }
- }
- }
- if(close)
- pwc->Hide(pwc);
- return(cont);
- }
-
-